package com.wang.gallerybackend.model.vo;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.json.JSONUtil;
import com.wang.gallerybackend.model.entity.Picture;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Data
public class PictureVO implements Serializable {


	/**
	 * 主键ID
	 */
	private Long id;

	/**
	 * 图片链接地址
	 */
	private String url;

	/**
	 * 图片缩略图链接地址
	 */
	private String thumbnailUrl;

	/**
	 * 图片名称
	 */
	private String name;

	/**
	 * 图片介绍
	 */
	private String introduction;

	/**
	 * 图片分类
	 */
	private String category;

	/**
	 * 标签，多个标签可用逗号分隔
	 */
	private List<String> tags;

	/**
	 * 图片大小，单位字节
	 */
	private Long picSize;

	/**
	 * 图片宽度，单位像素
	 */
	private Integer picWidth;

	/**
	 * 图片高度，单位像素
	 */
	private Integer picHeight;

	/**
	 * 宽高比，例如 1.78
	 */
	private Double picScale;

	/**
	 * 图片格式，如 jpg, png
	 */
	private String picFormat;

	/**
	 * 上传用户ID
	 */
	private Long userId;

	/**
	 * 空间id
	 */
	private Long spaceId;

	/**
	 * 最后编辑时间
	 */
	private Date editTime;

	/**
	 * 用户信息
	 */
	private UserVO user;
	/**
	 * 权限列表
	 */
	private List<String> permissionList = new ArrayList<>();



	/**
	 * 图片主色调
	 */
	private String picColor;

	private static final long serialVersionUID = 1L;

	/**
	 * VO转实体类
	 */
	public static Picture toEntity(PictureVO pictureVO) {
		if (pictureVO == null) {
			return null;
		}
		Picture picture = new Picture();
		BeanUtil.copyProperties(pictureVO, picture);
		picture.setTags(JSONUtil.toJsonStr(pictureVO.getTags()));
		return picture;
	}

	/**
	 * 实体类转VO
	 */
	public static PictureVO toVO(Picture picture) {
		if (picture == null) {
			return null;
		}
		PictureVO pictureVO = new PictureVO();
		BeanUtil.copyProperties(picture, pictureVO);
		pictureVO.setTags(JSONUtil.toList(picture.getTags(), String.class));
		return pictureVO;
	}

}
